package article

import (
	"fmt"
	"go-gin-api/app/model"
	"go-gin-api/app/util"

	"github.com/gin-gonic/gin"
)

// AddArticle 添加文章接受参数
type AddArticle struct {
	// 文章id
	ArticleID string `json:"article_id"`
	// 文章标题
	Title string `json:"title"`
	// 标签/分类ID
	TypeID string `json:"type_id" `
	// 作者id
	UserID string `json:"user_id"`
	// 添加时间
	AddTime string `json:"add_time"`
	// 修改时间
	ModifyTime string `json:"modify_time"`
	// 文章内容
	ArticleContent string `json:"article_content"`
}

// AddArticleService 添加文章服务
func (s *AddArticle) AddArticleService(c *gin.Context) *util.Response {
	fmt.Println(s)
	article := model.Article{
		Title:          s.Title,
		TypeID:         util.StringToInt(s.TypeID, 64),
		UserID:         util.StringToInt(s.UserID, 64),
		AddTime:        s.AddTime,
		ModifyTime:     s.ModifyTime,
		ArticleContent: s.ArticleContent,
		Status:         "0",
	}
	// 更新文章
	if s.ArticleID != "" {
		// 根据id查询文章
		count := 0
		model.DB.Model(&model.Article{}).Where("ID=?", s.ArticleID).Count(&count)
		if count == 0 {
			return &util.Response{
				Code:    40000,
				Message: "failed",
				Data:    "文章不存在",
			}
		}
		if err := model.DB.Model(&model.Article{}).Where("ID=?", s.ArticleID).Update(&article).Error; err != nil {
			return &util.Response{
				Code:    40000,
				Message: "failed",
				Data:    "更新文章失败",
			}
		}
	} else {
		// 创建文章
		if err := model.DB.Create(&article).Error; err != nil {
			return &util.Response{
				Code:    40000,
				Message: "failed",
				Data:    "创建失败",
			}
		}
	}

	return &util.Response{
		Code:    200,
		Message: "success",
		Data:    article,
	}

}
